package com.example.demo;

import jakarta.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import java.net.http.HttpResponse;
import java.util.HashMap;

@RequestMapping("/res")
//@RestController
// RestController = Controller(默认返回视图) + ResponseBody(返回数据)
@Controller
public class ResponseController {
    @ResponseBody
    //ResponseBody返回数据
    //既可以修饰类,又可以修饰方法
    //修饰类时:表示当前类的所有方法,全部返回数据和@Controller可以合并为@RestController
    //修饰方法时,表示当前方法返回数据
    @RequestMapping("/index")
    public String index(){
        return "/index.html";
        //无跳转 显示源数据
    }
    @RequestMapping("/indexData")
    public String indexData(){
        return "/index.html";
        //有跳转
    }
    @ResponseBody
    //@Controller 注解默认情况下会寻找返回的字符串对应的视图页面
    //如果不加Body,Spring MVC 会尝试查找名为 /<h1>hh</h1>.html 的视图页面，最终找不到对应的页面导致404错误。
    //程序会认为需要返回的是视图, 根据内容去查找⽂件, 但是查询不到, 路径不存在, 报404
    @RequestMapping("/index2")
    public String index2(){
        return "<h1>hh</h1>";
    }

    @RequestMapping("/getMap")
    @ResponseBody
    public HashMap<String, String> getMap(){
        HashMap<String, String> hashMap = new HashMap<>();
        hashMap.put("k1", "v1");
        hashMap.put("k2", "v2");
        hashMap.put("k3", "v3");
        return hashMap;
    }

    @RequestMapping("/setStatus")
    @ResponseBody
    public String setStatus(HttpServletResponse response){
        response.setStatus(411);
        return "设置状态码";
    }

    @RequestMapping(value = "/setContentType", produces = "application/json")
    @ResponseBody
    public String setContentType(){
        return "{\"ok\":1}";
    }



}
